package com.naiterui.ehp.bs.ds.modules.order.entity;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.naiterui.ehp.bs.ds.common.entity.BaseEntity;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <pre>
 *    订单表
 * </pre>
 *
 * @author zhouyanxin
 * @date 2019/1/11 下午11:19
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("e_order")
public class Order extends BaseEntity implements java.io.Serializable {

    /////////////////////////////  订单状态 /////////////////////////////////
    /**
     * 订单状态 待支付 1
     */
    public static final int ORDER_STATUS_WAIT_PAY = 1;
    /**
     * 订单状态 待发货 2
     */
    public static final int ORDER_STATUS_WAIT_SHIPPING = 2;

    /////////////////////////////  支付状态 /////////////////////////////////

    /**
     * 支付状态 未支付
     */
    public static final int PAY_STATUS_WAIT_PAY = 0;

    /**
     * 支付状态 已支付
     */
    public static final int PAY_STATUS_PAY = 1;
    /**
     * 支付状态 退款
     */
    public static final int PAY_STATUS_REFUND = 2;

    ///////////////////////////// 是否需要发票 /////////////////////////////////
    /**
     * 是否需要发票 不需要
     */
    public static final int INVOICE_NO_NEED = 0;

    /**
     * 是否需要发票 需要
     */
    public static final int INVOICE_NEED = 1;

    ///////////////////////////// 取消原因 /////////////////////////////////
    //取消原因(0:未取消,1:未支付取消,2:支付后取消3:确认后取消,4:测试订单)
    /**
     * 取消原因 未取消
     */
    public static final int CANCEL_TYPE_NORMAL = 0;
    private static final long serialVersionUID = -418093319564774773L;

    /**
     * 订单号
     */
    @TableField(insertStrategy = FieldStrategy.NOT_EMPTY)
    private String orderSn;
    /**
     * 下单用户id
     */
    private Long userId;
    /**
     * 仓库ID
     */
    private Long warehouseId;
    /**
     * 订单状态(1:待付款,2:待发货,3:已发货,4:已完成,5:已取消,6:退货中,7:已退货,8:已关闭)
     */
    private Integer orderStatus;
    /**
     * 支付状态(0:未支付,1:已支付,2:退款)
     */
    private Integer payStatus;
    /**
     * 支付类型(1:货到付款,2:微信支付)
     */
    private Integer payType;
    /**
     * 取消原因(0:未取消,1:未支付取消,2:支付后取消3:确认后取消,4:测试订单)
     */
    private Integer cancelReason;
    /**
     * 商品总价(分)
     */
    private Integer totalAmount;
    /**
     * 实付(分)
     */
    private Integer realPay;
    /**
     * 邮费(分)
     */
    private Integer freight;
    /**
     * 优惠券抵扣(分)
     */
    private Integer couponPay;
    /**
     * 是否需要发票(0:不需要,1:需要)
     */
    private Integer needInvoice;
    /**
     * 发票抬头
     */
    private String invoiceTitle;
    /**
     * 发票明细
     */
    private String invoiceContent;
    /**
     * 发票邮箱
     */
    private String invoiceEmail;
    /**
     * 发票电话
     */
    private String invoicePhone;
    /**
     * 发票税号
     */
    private String invoiceTaxNo;
    /**
     * 拣货人
     */
    private String pickupMan;
    /**
     * 发货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date sendTime;
    /**
     * 订单备注
     */
    private String remark;


}
